home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2007 November / PCWNOV07.iso / Software / Freeware / NSIS 2.29 / nsis-2.29-setup.exe / Examples / WordFunc.nsi < prev    next >
Encoding:
Text File  |  2005-06-21  |  16.2 KB  |  544 lines

  1. ;_____________________________________________________________________________
  2. ;
  3. ;                          Word Functions
  4. ;_____________________________________________________________________________
  5. ;
  6. ; 2005 Shengalts Aleksander aka Instructor (Shengalts@mail.ru)
  7.  
  8. Name "Word Functions"
  9. OutFile "WordFunc.exe"
  10. Caption "$(^Name)"
  11. XPStyle on
  12.  
  13. Var INI
  14. Var HWND
  15. Var STATE
  16.  
  17. !include "WinMessages.nsh"
  18. !include "WordFunc.nsh"
  19.  
  20. !insertmacro WordFind
  21. !insertmacro WordFind2X
  22. !insertmacro WordReplace
  23. !insertmacro WordAdd
  24. !insertmacro WordInsert
  25. !insertmacro StrFilter
  26. !insertmacro VersionCompare
  27. !insertmacro VersionConvert
  28.  
  29. Page Custom ShowCustom LeaveCustom
  30.  
  31. Function ShowCustom
  32.     InstallOptions::initDialog /NOUNLOAD "$INI"
  33.     Pop $hwnd
  34.     InstallOptions::show
  35.     Pop $0
  36. FunctionEnd
  37.  
  38. Function LeaveCustom
  39.     ReadINIStr $0 $INI "Settings" "State"
  40.     StrCmp $0 0 Enter
  41.  
  42.     GetDlgItem $1 $HWND 1202
  43.     EnableWindow $1 1
  44.     GetDlgItem $1 $HWND 1203
  45.     ShowWindow $1 1
  46.     GetDlgItem $1 $HWND 1204
  47.     ShowWindow $1 1
  48.     GetDlgItem $1 $HWND 1206
  49.     EnableWindow $1 1
  50.     GetDlgItem $1 $HWND 1205
  51.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  52.     GetDlgItem $1 $HWND 1206
  53.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  54.  
  55.     ReadINIStr $0 $INI "Field 1" "State"
  56.     StrCmp $0 "1. WordFind        (Find word by number)" 0 WordFind2Send
  57.     GetDlgItem $1 $HWND 1202
  58.     SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\"
  59.     GetDlgItem $1 $HWND 1204
  60.     SendMessage $1 ${WM_SETTEXT} 1 "STR:-4"
  61.     GetDlgItem $1 $HWND 1210
  62.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #"
  63.     GetDlgItem $1 $HWND 1211
  64.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Word):"
  65.     goto WordFindSend
  66.  
  67.     WordFind2Send:
  68.     StrCmp $0 "                           (Delimiter exclude)" 0 WordFind3Send
  69.     GetDlgItem $1 $HWND 1202
  70.     SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\"
  71.     GetDlgItem $1 $HWND 1204
  72.     SendMessage $1 ${WM_SETTEXT} 1 "STR:E-2{"
  73.     GetDlgItem $1 $HWND 1210
  74.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #"
  75.     GetDlgItem $1 $HWND 1211
  76.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Before{ or }after delimiter):"
  77.     goto WordFindSend
  78.  
  79.     WordFind3Send:
  80.     StrCmp $0 "                           (Sum of words)" 0 WordFind4Send
  81.     GetDlgItem $1 $HWND 1202
  82.     SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\"
  83.     GetDlgItem $1 $HWND 1204
  84.     SendMessage $1 ${WM_SETTEXT} 1 "STR:#"
  85.     GetDlgItem $1 $HWND 1210
  86.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Option"
  87.     GetDlgItem $1 $HWND 1211
  88.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Sum of words):"
  89.     goto WordFindSend
  90.  
  91.     WordFind4Send:
  92.     StrCmp $0 "                           (Sum of delimiters)" 0 WordFind5Send
  93.     GetDlgItem $1 $HWND 1202
  94.     SendMessage $1 ${WM_SETTEXT} 1 "STR:|"
  95.     GetDlgItem $1 $HWND 1204
  96.     SendMessage $1 ${WM_SETTEXT} 1 "STR:E*"
  97.     GetDlgItem $1 $HWND 1210
  98.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Option"
  99.     GetDlgItem $1 $HWND 1211
  100.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Sum of delimiters):"
  101.     goto WordFindSend
  102.  
  103.     WordFind5Send:
  104.     StrCmp $0 "                           (Find word number)" 0 WordFind6Send
  105.     GetDlgItem $1 $HWND 1202
  106.     SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\"
  107.     GetDlgItem $1 $HWND 1204
  108.     SendMessage $1 ${WM_SETTEXT} 1 "STR:/Program Files"
  109.     GetDlgItem $1 $HWND 1210
  110.     SendMessage $1 ${WM_SETTEXT} 1 "STR:/Word"
  111.     GetDlgItem $1 $HWND 1211
  112.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Word #):"
  113.     goto WordFindSend
  114.  
  115.     WordFind6Send:
  116.     StrCmp $0 "                           ( }} )" 0 WordFind7Send
  117.     GetDlgItem $1 $HWND 1202
  118.     SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\"
  119.     GetDlgItem $1 $HWND 1204
  120.     SendMessage $1 ${WM_SETTEXT} 1 "STR:E+2}}"
  121.     GetDlgItem $1 $HWND 1210
  122.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #"
  123.     GetDlgItem $1 $HWND 1211
  124.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Before{{ or }}after word):"
  125.     goto WordFindSend
  126.  
  127.     WordFind7Send:
  128.     StrCmp $0 "                           ( {} )" 0 WordFind8Send
  129.     GetDlgItem $1 $HWND 1202
  130.     SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\"
  131.     GetDlgItem $1 $HWND 1204
  132.     SendMessage $1 ${WM_SETTEXT} 1 "STR:+2{}"
  133.     GetDlgItem $1 $HWND 1210
  134.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #"
  135.     GetDlgItem $1 $HWND 1211
  136.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Without word):"
  137.     goto WordFindSend
  138.  
  139.     WordFind8Send:
  140.     StrCmp $0 "                           ( *} )" 0 WordFind2XSend
  141.     GetDlgItem $1 $HWND 1202
  142.     SendMessage $1 ${WM_SETTEXT} 1 "STR:|C:\"
  143.     GetDlgItem $1 $HWND 1204
  144.     SendMessage $1 ${WM_SETTEXT} 1 "STR:E+2*}"
  145.     GetDlgItem $1 $HWND 1210
  146.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #"
  147.     GetDlgItem $1 $HWND 1211
  148.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Before{* or *}after word with word):"
  149.     goto WordFindSend
  150.  
  151.     WordFind2XSend:
  152.     StrCmp $0 "2. WordFind2X" 0 WordReplace1Send
  153.     GetDlgItem $1 $HWND 1201
  154.     SendMessage $1 ${WM_SETTEXT} 1 "STR:[C:\io.sys];[C:\logo.sys];[C:\WINDOWS]"
  155.     GetDlgItem $1 $HWND 1202
  156.     SendMessage $1 ${WM_SETTEXT} 1 "STR:[C:\"
  157.     GetDlgItem $1 $HWND 1203
  158.     EnableWindow $1 1
  159.     SendMessage $1 ${WM_SETTEXT} 1 "STR:];"
  160.     GetDlgItem $1 $HWND 1204
  161.     SendMessage $1 ${WM_SETTEXT} 1 "STR:E+2"
  162.     GetDlgItem $1 $HWND 1207
  163.     SendMessage $1 ${WM_SETTEXT} 1 "STR:String"
  164.     GetDlgItem $1 $HWND 1208
  165.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Delimiter1"
  166.     GetDlgItem $1 $HWND 1209
  167.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Delimiter2"
  168.     GetDlgItem $1 $HWND 1210
  169.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #"
  170.     GetDlgItem $1 $HWND 1211
  171.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (Word):"
  172.     abort
  173.  
  174.     WordReplace1Send:
  175.     StrCmp $0 "3. WordReplace (Replace)" 0 WordReplace2Send
  176.     GetDlgItem $1 $HWND 1201
  177.     SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\io.sys|C:\logo.sys|C:\WINDOWS"
  178.     GetDlgItem $1 $HWND 1202
  179.     SendMessage $1 ${WM_SETTEXT} 1 "STR:SYS"
  180.     GetDlgItem $1 $HWND 1203
  181.     SendMessage $1 ${WM_SETTEXT} 1 "STR:bmp"
  182.     GetDlgItem $1 $HWND 1204
  183.     SendMessage $1 ${WM_SETTEXT} 1 "STR:+2"
  184.     goto WordReplaceSend
  185.  
  186.     WordReplace2Send:
  187.     StrCmp $0 "                           (Delete)" 0 WordReplace3Send
  188.     GetDlgItem $1 $HWND 1201
  189.     SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\io.sys|C:\logo.sys|C:\WINDOWS"
  190.     GetDlgItem $1 $HWND 1202
  191.     SendMessage $1 ${WM_SETTEXT} 1 "STR:SYS"
  192.     GetDlgItem $1 $HWND 1203
  193.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  194.     GetDlgItem $1 $HWND 1204
  195.     SendMessage $1 ${WM_SETTEXT} 1 "STR:E+"
  196.     goto WordReplaceSend
  197.  
  198.     WordReplace3Send:
  199.     StrCmp $0 "                           (Multiple-replace)" 0 WordAdd1Send
  200.     GetDlgItem $1 $HWND 1201
  201.     SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\io.sys||||||C:\logo.sys|||C:\WINDOWS"
  202.     GetDlgItem $1 $HWND 1202
  203.     SendMessage $1 ${WM_SETTEXT} 1 "STR:|"
  204.     GetDlgItem $1 $HWND 1203
  205.     SendMessage $1 ${WM_SETTEXT} 1 "STR:|"
  206.     GetDlgItem $1 $HWND 1204
  207.     SendMessage $1 ${WM_SETTEXT} 1 "STR:+1*"
  208.     goto WordReplaceSend
  209.  
  210.     WordAdd1Send:
  211.     StrCmp $0 "4. WordAdd        (Add)" 0 WordAdd2Send
  212.     GetDlgItem $1 $HWND 1204
  213.     SendMessage $1 ${WM_SETTEXT} 1 "STR:+C:\WINDOWS|C:\config.sys|C:\IO.SYS"
  214.     GetDlgItem $1 $HWND 1211
  215.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (String1 + String2):"
  216.     goto WordAddSend
  217.  
  218.     WordAdd2Send:
  219.     StrCmp $0 "                           (Delete) " 0 WordInsertSend
  220.     GetDlgItem $1 $HWND 1204
  221.     SendMessage $1 ${WM_SETTEXT} 1 "STR:E-C:\WINDOWS|C:\config.sys|C:\IO.SYS"
  222.     GetDlgItem $1 $HWND 1211
  223.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (String1 - String2):"
  224.     goto WordAddSend
  225.  
  226.     WordInsertSend:
  227.     StrCmp $0 "5. WordInsert" 0 StrFilter1Send
  228.     GetDlgItem $1 $HWND 1201
  229.     SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\io.sys|C:\WINDOWS"
  230.     GetDlgItem $1 $HWND 1202
  231.     SendMessage $1 ${WM_SETTEXT} 1 "STR:|"
  232.     GetDlgItem $1 $HWND 1203
  233.     EnableWindow $1 1
  234.     SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\logo.sys"
  235.     GetDlgItem $1 $HWND 1204
  236.     SendMessage $1 ${WM_SETTEXT} 1 "STR:E+2"
  237.     GetDlgItem $1 $HWND 1207
  238.     SendMessage $1 ${WM_SETTEXT} 1 "STR:String"
  239.     GetDlgItem $1 $HWND 1208
  240.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Delimiter"
  241.     GetDlgItem $1 $HWND 1209
  242.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Word"
  243.     GetDlgItem $1 $HWND 1210
  244.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #"
  245.     GetDlgItem $1 $HWND 1211
  246.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result:"
  247.     abort
  248.  
  249.     StrFilter1Send:
  250.     StrCmp $0 "6. StrFilter           (UpperCase)" 0 StrFilter2Send
  251.     GetDlgItem $1 $HWND 1201
  252.     SendMessage $1 ${WM_SETTEXT} 1 "STR:123abc 456DEF 7890|%#"
  253.     GetDlgItem $1 $HWND 1202
  254.     SendMessage $1 ${WM_SETTEXT} 1 "STR:+"
  255.     GetDlgItem $1 $HWND 1203
  256.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  257.     GetDlgItem $1 $HWND 1204
  258.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  259.     GetDlgItem $1 $HWND 1211
  260.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (String in uppercase):"
  261.     goto StrFilterSend
  262.  
  263.     StrFilter2Send:
  264.     StrCmp $0 "                           (LowerCase)" 0 StrFilter3Send
  265.     GetDlgItem $1 $HWND 1201
  266.     SendMessage $1 ${WM_SETTEXT} 1 "STR:123abc 456DEF 7890|%#"
  267.     GetDlgItem $1 $HWND 1202
  268.     SendMessage $1 ${WM_SETTEXT} 1 "STR:-"
  269.     GetDlgItem $1 $HWND 1203
  270.     SendMessage $1 ${WM_SETTEXT} 1 "STR:ef"
  271.     GetDlgItem $1 $HWND 1204
  272.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  273.     GetDlgItem $1 $HWND 1211
  274.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (String in lowercase except EF):"
  275.     goto StrFilterSend
  276.  
  277.     StrFilter3Send:
  278.     StrCmp $0 "                           (Filter)" 0 VersionCompareSend
  279.     GetDlgItem $1 $HWND 1201
  280.     SendMessage $1 ${WM_SETTEXT} 1 "STR:123abc 456DEF 7890|%#"
  281.     GetDlgItem $1 $HWND 1202
  282.     SendMessage $1 ${WM_SETTEXT} 1 "STR:+12"
  283.     GetDlgItem $1 $HWND 1203
  284.     SendMessage $1 ${WM_SETTEXT} 1 "STR:b"
  285.     GetDlgItem $1 $HWND 1204
  286.     SendMessage $1 ${WM_SETTEXT} 1 "STR:def"
  287.     GetDlgItem $1 $HWND 1211
  288.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (String Digits + Letters + b - def):"
  289.     goto StrFilterSend
  290.  
  291.     VersionCompareSend:
  292.     StrCmp $0 "7. VersionCompare" 0 VersionConvertSend
  293.     GetDlgItem $1 $HWND 1201
  294.     SendMessage $1 ${WM_SETTEXT} 1 "STR:1.1.1.9"
  295.     GetDlgItem $1 $HWND 1202
  296.     SendMessage $1 ${WM_SETTEXT} 1 "STR:1.1.1.01"
  297.     GetDlgItem $1 $HWND 1203
  298.     ShowWindow $1 0
  299.     GetDlgItem $1 $HWND 1204
  300.     ShowWindow $1 0
  301.     GetDlgItem $1 $HWND 1206
  302.     EnableWindow $1 0
  303.     GetDlgItem $1 $HWND 1207
  304.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Version1"
  305.     GetDlgItem $1 $HWND 1208
  306.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Version2"
  307.     GetDlgItem $1 $HWND 1209
  308.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  309.     GetDlgItem $1 $HWND 1210
  310.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  311.     GetDlgItem $1 $HWND 1211
  312.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (0-equal 1-newer 2-older):"
  313.     abort
  314.  
  315.     VersionConvertSend:
  316.     StrCmp $0 "8. VersionConvert" 0 Abort
  317.     GetDlgItem $1 $HWND 1201
  318.     SendMessage $1 ${WM_SETTEXT} 1 "STR:9.0c"
  319.     GetDlgItem $1 $HWND 1202
  320.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  321.     GetDlgItem $1 $HWND 1203
  322.     ShowWindow $1 0
  323.     GetDlgItem $1 $HWND 1204
  324.     ShowWindow $1 0
  325.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  326.     GetDlgItem $1 $HWND 1206
  327.     EnableWindow $1 0
  328.     GetDlgItem $1 $HWND 1207
  329.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Version"
  330.     GetDlgItem $1 $HWND 1208
  331.     SendMessage $1 ${WM_SETTEXT} 1 "STR:CharList"
  332.     GetDlgItem $1 $HWND 1209
  333.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  334.     GetDlgItem $1 $HWND 1210
  335.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  336.     GetDlgItem $1 $HWND 1211
  337.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result (numerical version format):"
  338.     abort
  339.  
  340.     Abort:
  341.     Abort
  342.  
  343.     WordFindSend:
  344.     GetDlgItem $1 $HWND 1203
  345.     EnableWindow $1 0
  346.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  347.     GetDlgItem $1 $HWND 1201
  348.     SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\io.sys|C:\logo.sys|C:\Program Files|C:\WINDOWS"
  349.     GetDlgItem $1 $HWND 1207
  350.     SendMessage $1 ${WM_SETTEXT} 1 "STR:String"
  351.     GetDlgItem $1 $HWND 1208
  352.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Delimiter"
  353.     GetDlgItem $1 $HWND 1209
  354.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  355.     Abort
  356.  
  357.     WordReplaceSend:
  358.     GetDlgItem $1 $HWND 1203
  359.     EnableWindow $1 1
  360.     GetDlgItem $1 $HWND 1207
  361.     SendMessage $1 ${WM_SETTEXT} 1 "STR:String"
  362.     GetDlgItem $1 $HWND 1208
  363.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Replace it"
  364.     GetDlgItem $1 $HWND 1209
  365.     SendMessage $1 ${WM_SETTEXT} 1 "STR:         with"
  366.     GetDlgItem $1 $HWND 1210
  367.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Word #"
  368.     GetDlgItem $1 $HWND 1211
  369.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Result:"
  370.     Abort
  371.  
  372.     WordAddSend:
  373.     GetDlgItem $1 $HWND 1203
  374.     EnableWindow $1 0
  375.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  376.     GetDlgItem $1 $HWND 1201
  377.     SendMessage $1 ${WM_SETTEXT} 1 "STR:C:\io.sys|C:\logo.sys|C:\WINDOWS"
  378.     GetDlgItem $1 $HWND 1202
  379.     SendMessage $1 ${WM_SETTEXT} 1 "STR:|"
  380.     GetDlgItem $1 $HWND 1207
  381.     SendMessage $1 ${WM_SETTEXT} 1 "STR:String1"
  382.     GetDlgItem $1 $HWND 1208
  383.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Delimiter"
  384.     GetDlgItem $1 $HWND 1209
  385.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  386.     GetDlgItem $1 $HWND 1210
  387.     SendMessage $1 ${WM_SETTEXT} 1 "STR:String2"
  388.     Abort
  389.  
  390.     StrFilterSend:
  391.     GetDlgItem $1 $HWND 1203
  392.     EnableWindow $1 1
  393.     GetDlgItem $1 $HWND 1206
  394.     EnableWindow $1 0
  395.     GetDlgItem $1 $HWND 1207
  396.     SendMessage $1 ${WM_SETTEXT} 1 "STR:String"
  397.     GetDlgItem $1 $HWND 1208
  398.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Filter"
  399.     GetDlgItem $1 $HWND 1209
  400.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Include"
  401.     GetDlgItem $1 $HWND 1210
  402.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Exclude"
  403.     Abort
  404.  
  405. ;=Enter=
  406.     Enter:
  407.     StrCpy $0 ''
  408.     ReadINIStr $STATE $INI "Field 1" "State"
  409.     ReadINIStr $R1 $INI "Field 2" "State"
  410.     ReadINIStr $R2 $INI "Field 3" "State"
  411.     ReadINIStr $R3 $INI "Field 4" "State"
  412.     ReadINIStr $R4 $INI "Field 5" "State"
  413.  
  414.     StrCmp $STATE "1. WordFind        (Find word by number)" WordFind
  415.     StrCmp $STATE "                           (Delimiter exclude)" WordFind
  416.     StrCmp $STATE "                           (Find in string)" WordFind
  417.     StrCmp $STATE "                           (Sum of words)" WordFind
  418.     StrCmp $STATE "                           (Sum of delimiters)" WordFind
  419.     StrCmp $STATE "                           (Find word number)" WordFind
  420.     StrCmp $STATE "                           ( }} )" WordFind
  421.     StrCmp $STATE "                           ( {} )" WordFind
  422.     StrCmp $STATE "                           ( *} )" WordFind
  423.     StrCmp $STATE "2. WordFind2X" WordFind2X
  424.     StrCmp $STATE "3. WordReplace (Replace)" WordReplace
  425.     StrCmp $STATE "                           (Delete)" WordReplace
  426.     StrCmp $STATE "                           (Multiple-replace)" WordReplace
  427.     StrCmp $STATE "4. WordAdd        (Add)" WordAdd
  428.     StrCmp $STATE "                           (Delete) " WordAdd
  429.     StrCmp $STATE "5. WordInsert" WordInsert
  430.     StrCmp $STATE "6. StrFilter           (UpperCase)" StrFilter
  431.     StrCmp $STATE "                           (LowerCase)" StrFilter
  432.     StrCmp $STATE "                           (Filter)" StrFilter
  433.     StrCmp $STATE "7. VersionCompare" VersionCompare
  434.     StrCmp $STATE "8. VersionConvert" VersionConvert
  435.     Abort
  436.  
  437.     WordFind:
  438.     ${WordFind} "$R1" "$R2" "$R4" $R0
  439.     IfErrors 0 Send
  440.     StrCpy $0 $R0
  441.     StrCmp $R0 3 0 +3
  442.     StrCpy $3 '"+1" "-1" "+1}" "+1{" "#" "/word"'
  443.     goto error3
  444.     StrCmp $R0 2 0 error1
  445.     StrCpy $R4 $R4 '' 1
  446.     StrCpy $1 $R4 1
  447.     StrCmp $1 / 0 error2
  448.     StrCpy $R4 $R4 '' 1
  449.     StrCpy $R0 '"$R4" no such word.'
  450.     goto Send
  451.  
  452.     WordFind2X:
  453.     ${WordFind2X} "$R1" "$R2" "$R3" "$R4" $R0
  454.     IfErrors 0 Send
  455.     StrCpy $0 $R0
  456.     StrCmp $R0 3 0 +3
  457.     StrCpy $3 '"+1" "-1"'
  458.     goto error3
  459.     StrCmp $R0 2 +3
  460.     StrCpy $R0 '"$R2...$R3" no words found.'
  461.     goto Send
  462.     StrCpy $R4 $R4 '' 1
  463.     StrCpy $1 $R4 1
  464.     StrCmp $1 / 0 +2
  465.     StrCpy $R4 $R4 '' 1
  466.     StrCpy $R0 '"$R4" no such word.'
  467.     goto Send
  468.  
  469.     WordReplace:
  470.     ${WordReplace} "$R1" "$R2" "$R3" "$R4" $R0
  471.     IfErrors 0 Send
  472.     StrCpy $0 $R0
  473.     StrCmp $R0 3 0 +3
  474.     StrCpy $3 '"+1" "+1*" "+" "+*" "{}"'
  475.     goto error3
  476.     StrCmp $R0 2 0 error1
  477.     StrCpy $R4 $R4 '' 1
  478.     goto error2
  479.  
  480.     WordAdd:
  481.     ${WordAdd} "$R1" "$R2" "$R4" $R0
  482.     IfErrors 0 Send
  483.     StrCpy $0 $R0
  484.     StrCmp $R0 3 0 error1empty
  485.     StrCpy $3 '"+text" "-text"'
  486.     goto error3
  487.  
  488.     WordInsert:
  489.     ${WordInsert} "$R1" "$R2" "$R3" "$R4" $R0
  490.     IfErrors 0 Send
  491.     StrCpy $0 $R0
  492.     StrCmp $R0 3 0 +3
  493.     StrCpy $3 '"+1" "-1"'
  494.     goto error3
  495.     StrCmp $R0 2 0 error1empty
  496.     StrCpy $R4 $R4 '' 1
  497.     goto error2
  498.  
  499.     StrFilter:
  500.     ${StrFilter} "$R1" "$R2" "$R3" "$R4" $R0
  501.     IfErrors 0 Send
  502.     StrCpy $R0 'Syntax error'
  503.     goto Send
  504.  
  505.     VersionCompare:
  506.     ${VersionCompare} "$R1" "$R2" $R0
  507.     goto Send
  508.  
  509.     VersionConvert:
  510.     ${VersionConvert} "$R1" "$R2" $R0
  511.     goto Send
  512.  
  513.     error3:
  514.     StrCpy $R0 '"$R4" syntax error ($3)'
  515.     goto Send
  516.     error2:
  517.     StrCpy $R0 '"$R4" no such word number'
  518.     goto Send
  519.     error1empty:
  520.     StrCpy $R0 '"$R2" delimiter is empty'
  521.     goto Send
  522.     error1:
  523.     StrCpy $R0 '"$R2" delimiter not found in string'
  524.     goto Send
  525.  
  526.     Send:
  527.     GetDlgItem $1 $HWND 1205
  528.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$R0"
  529.     GetDlgItem $1 $HWND 1206
  530.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$0"
  531.     abort
  532. FunctionEnd
  533.  
  534. Function .onInit
  535.     InitPluginsDir
  536.     GetTempFileName $INI $PLUGINSDIR
  537.     File /oname=$INI "WordFunc.ini"
  538. FunctionEnd
  539.  
  540. Page instfiles
  541.  
  542. Section "Empty"
  543. SectionEnd
  544.